1단계: 준비 (Initialization)
먼저 모든 단어를 글자(character) 단위로 분해하고,
단어의 끝을 의미하는 특수 기호 </w>를 추가합니다.
이 시점의 어휘집은 텍스트에 존재하는 모든 기본 글자들입니다.
토큰화(Tokenization)는 텍스트를 AI 모델이 처리할 수 있는 의미 있는 작은 단위인 토큰(token)으로 나누는 과정입니다.
단순히 띄어쓰기로 나누는 것을 넘어, 현대 NLP에서는 OOV 문제를 해결하는 서브워드(Subword) 방식이 표준으로 사용됩니다.
기존의 단어 단위(띄어쓰기 기준) 처리 방식은
OOV(Out-of-Vocabulary, 어휘집에 없는 단어) 문제에 취약했습니다.
이 똑똑한 '단어 쪼개기'는 주로 아래 세 가지 알고리즘을 통해 이루어집니다.
이 중 가장 대표적이고 기본이 되는 BPE 알고리즘의 작동 방식을 자세히 살펴보겠습니다.
글자 단위에서 시작해 가장 자주 함께 나오는 글자 쌍을 합쳐 하나의 토큰으로 만드는 과정을 반복
BPE와 유사하지만, 빈도수가 아닌 '의미를 가장 잘 보존할 가능성(Likelihood)'이 높은 쌍을 병합 (BERT에서 사용)
띄어쓰기까지 하나의 문자로 취급하여 언어에 구애받지 않고 토큰화를 수행
BPE는 어떻게 최적의 서브워드 어휘집(Vocabulary)을 만들까요?low lowest newest 라는 텍스트를 예시로 학습 과정을 살펴보겠습니다.
먼저 모든 단어를 글자(character) 단위로 분해하고,
단어의 끝을 의미하는 특수 기호 </w>를 추가합니다.
이 시점의 어휘집은 텍스트에 존재하는 모든 기본 글자들입니다.
텍스트 전체에서 가장 자주 나타나는 인접한 토큰 쌍을 찾아
새로운 토큰으로 병합하고 어휘집에 추가합니다.
이 과정을 정해진 횟수만큼 반복합니다.
이러한 단점들에도 불구하고, OOV 문제를 해결하는 이점이 워낙 막강하기 때문에
현대 NLP 모델들은 서브워드 방식을 표준으로 채택하고 있습니다.